/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package code;

import java.io.IOException;
import java.util.*;

/**
 *
 * @author Catarina
 */
public class IO {
    
    public static void importaBDusers(){
        
        
        try {
            Global.redeTotal = LerFicheiro.importUsers("C:\\Users\\Tiago\\Documents\\NetBeansProjects\\LI3_JAVA_FINAL_Swing\\src\\code\\utilizadoresFSQ_UM.txt");
            System.out.println("A importar...\n");
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        
        System.out.println("Concluído!");
    }
    
    
    public static void importaBDamigos(Rede r){
        System.out.println("A importar...");
        try {
            Global.redeTotal = LerFicheiro.importFriends("C:\\Users\\Tiago\\Documents\\NetBeansProjects\\LI3_JAVA_FINAL_Swing\\src\\code\\relacoesEntreAmigos.txt", Global.redeTotal);
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }

        System.out.println("Concluído!");
    }
    
    
    public static void importaBDusersObjStream() throws ClassNotFoundException{
        System.out.println("A importar...\n");
        
        try {
            Global.redeTotal = LerFicheiro.importUsers("C:\\Users\\Tiago\\Documents\\NetBeansProjects\\LI3_JAVA_FINAL_Swing\\src\\code\\printBDstream.txt");
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        
        System.out.println("Concluído!");
    }
    
    
    public static void importaBDamigosObjStream(Rede r) throws ClassNotFoundException{
        System.out.println("A importar...");
        try {
            Global.redeTotal = LerFicheiro.importFriends("C:\\Users\\Tiago\\Documents\\NetBeansProjects\\LI3_JAVA_FINAL_Swing\\src\\code\\relacoesEntreAmigos.txt", Global.redeTotal);
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }

        System.out.println("Concluído!");
    }
    
    
    public static void loginUser(){
        String nick = "";
        Scanner input = new Scanner(System.in);
        
        System.out.println("Insira o seu nickname:");
        nick = input.nextLine();
        
        Global.logUser = Global.redeTotal.searchUsersNick(nick);
        System.out.println("\nLogin efectuado com sucesso!\n\n" + Global.logUser.toString());
    }
    
    
    public static void registaUser(Rede r){
        String nome = "";
        String nick = "";
        String morada = "";
        String mail = "";
        
        Scanner input = new Scanner(System.in);
        System.out.println("Insira o nome pretendido:\n");
        nome = input.nextLine();
        System.out.println("Insira o nickname pretendido:\n");
        nick = input.nextLine();
        System.out.println("Insira a sua morada:\n");
        morada = input.nextLine();
        System.out.println("Insira o seu e-mail:\n");
        mail = input.nextLine();
        
        User u = new User(nome, nick, morada, mail);
        r.addUser(u);
        System.out.println("\nRegisto efectuado com sucesso!\nVerifique os dados inseridos:\n\n" + u.toString());
    }

    public static void procuraUser(Rede r){
        User aux = new User();
        String choice = " ";
        String s = "";
        Scanner input = new Scanner(System.in);
        System.out.println("Deseja procurar o utilizador por nome (1) ou nickname (2)?\n");
        choice = input.nextLine();
        if(choice.equals("1")){            
            System.out.println("Qual o nome do utilizador que deseja pesquisar?");
            s = input.nextLine();
            
            aux = r.searchUsersNome(s);
            
            System.out.println("Concluído!\n");
            System.out.println(aux.toString());
            return;
        }
        if(choice.equals("2")){
            System.out.println("Qual o nick do utilizador que deseja pesquisar?");
            s = input.nextLine();
            
            aux = r.searchUsersNick(s);
            
            System.out.println("Concluído!\n");
            System.out.println(aux.toString());
            return;
        }
        else{ 
            System.out.println("Escolha inválida!\n");
            procuraUser(r);
            return;
        }
            
    }
    
    public static void adicionarPedido(Rede r){
        String sender = "";
        String receiver = "";
        User auxS = new User();
        User auxR = new User();
        Scanner input = new Scanner(System.in);
        
        System.out.println("Qual o seu nick?");
        sender = input.nextLine();
        auxS = r.searchUsersNick(sender);
        if(auxS == null){ 
            System.out.println("Utilizador não encontrado!\n");
            adicionarPedido(r);
            return;
        }
        
        System.out.println("Qual o nickname do utilizador que deseja enviar o pedido de amizade?");
        receiver = input.nextLine();
        auxR = r.searchUsersNick(receiver);
        if(auxR == null){
            System.out.println("Utilizador não encontrado!\n");
            adicionarPedido(r);
            return;
        }

        r.addPedidoGeral(auxS, auxR);
        System.out.println("Pedido adicionado com sucesso!\n");
        System.out.println(auxR.toString());
        
    }
    
    
    public static void manipularPedidos(Rede r){
        System.out.println(Global.logUser.toStringPedidos());
        Scanner input = new Scanner(System.in);
        String choice = "";
        for(User us : Global.logUser.getPedidos()){
            System.out.println(us.toStringSimples());
            System.out.println("Deseja aceitar (1) ou rejeitar (2) este pedido?");
            choice = input.nextLine();
            if(choice.equals("1")){
                r.addAmizade(Global.logUser, us);
                Global.logUser.removePedido(us);
                System.out.println("Você é agora amigo de:\n" + us.toStringSimples());
                return;
            }
            if(choice.equals("2")){
                Global.logUser.removePedido(us);
                System.out.println("Pedido removido com sucesso!\n");
                return;
            }
            else{
                System.out.println("Opção inválida!\n");
                manipularPedidos(r);
                return;
            } 
        }
    }
    
    
    public static void apagarUser(Rede r){
        String choice = "";
        String s = "";
        User aux = new User();
        Scanner input = new Scanner(System.in);
        System.out.println("Deseja remover o user por nome(1) ou nickname(2)?");
        choice = input.nextLine();
        if(choice.equals("1")){
            System.out.println("Qual o nome do utilizador que deseja pesquisar?");
            s = input.nextLine();
            
            aux = r.searchUsersNome(s);

            System.out.println(aux.toString());
            System.out.println("A remover...\n");
            r.removeUser(aux);
            System.out.println("Concluído!\n");
            return;
        }
        if(choice.equals("2")){
            System.out.println("Qual o nickname do utilizador que deseja pesquisar?");
            s = input.nextLine();
            
            aux = r.searchUsersNick(s);

            System.out.println(aux.toString());
            System.out.println("A remover...\n");
            r.removeUser(aux);
            System.out.println("Concluído!\n");
            return;
        }
        else{
            System.out.println("Opção inválida!\n");
            apagarUser(r);
            return;
        }
    }
    
    
    public static void visualizarAmigos(Rede r){
        String s = "";
        User aux = new User();
        Scanner input = new Scanner(System.in);
        System.out.println("Qual o nickname do utilizador do qual quer visualizar os amigos?");
        s = input.nextLine();
        aux = r.searchUsersNick(s);
        System.out.println("UTILIZADOR\n" + aux.toStringSimples() + "\n" + aux.toStringAmigos());
    }
    
    
    
}
